<template>
  <div>
    <!-- 添加按钮 -->
    <el-button @click="willAdd" type="primary">添加</el-button>
    <!-- 表格 -->
    <list-vue @willupdate="willupdate" :arr="arr" @init="getlist"></list-vue>
    <!-- 分页 -->
    <!-- 
      分页组件
      total：表示总条目数,默认1页10条
      layout="prev, pager, next" prev:上一页 next:下一页 pager：页码
      background属性可以为分页按钮添加背景色。
      page-size	每页显示条目个数
      current-change	currentPage 改变时会触发
     -->
    <el-pagination
      @current-change="changePage"
      background
      layout="prev, pager, next"
      :total="total"
      :page-size="size"
    >
    </el-pagination>

    <!-- 弹框 -->
    <!-- 3.将info传给form -->
    <!-- 6.4将arr传给form -->
    <!-- 6.5绑定自定义事件 init -->
    <form-vue :info="info" :arr="arr" @init="getlist" ref="form"></form-vue>
  </div>
</template>
<script>
import listVue from "./components/list.vue";
import formVue from "./components/form.vue";
import { mapGetters, mapActions } from "vuex";
import { requserlist, requsercount } from "../../http/api";
import { toggle } from "../../minxins/index";
export default {
  components: {
    listVue,
    formVue,
  },
  props: [],
  data() {
    return {
      // 6.1初始化列表数据
      arr: [],
      total: 0, //总条目数量
      size: 2, //一页的数量
      page: 1, //当前页码
    };
  },
  computed: {
    ...mapGetters({}),
  },
  mounted() {
    this.getlist();
  },
  methods: {
    ...mapActions({}),
    requsList() {
      // 6.2请求列表
      requserlist({
        page: this.page,
        size: this.size,
      }).then((res) => {
        if (res.data.code == 200) {
          let arr = res.data.list ? res.data.list : [];
          // 如果当前页不是第1 页，且取到了0条数据，那么应该请求上一页
          if (this.page != 1 && arr.length == 0) {
            this.page--;
            this.requsList();
            return;
          }
          this.arr = arr;
        }
      });
    },
    // 6.2请求列表
    getlist() {
      // 请求列表
      this.requsList();
      // 请求总数
      requsercount().then((res) => {
        if (res.data.code == 200) {
          this.total = res.data.list[0].total;
        }
      });
    },
    // 页码发生了改变
    changePage(e) {
      this.page = e;
      this.requsList();
    },
  },
  mixins: [toggle],
};
</script>
<style scoped lang="less">
@import "../../less/index.less";
</style>